Den här frågan har redan svar här: Express js - kan inte omdirigera (4 svar) Stängt för 7 år sedan. Jag använder passportjs med en middleware nedan. Det är antagligen att kontrollera om användaren är inloggad när han begär vissa saker. Om han inte är inloggad ska han omdirigeras till inloggningssidan. Jag har en begäran på följande sätt: app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update); Denna rutt anropas när användaren försöker uppdatera en resurs som heter Fantasy Team på webbplatsen auth.requiresLogin är en mellanprogramvara enligt följande: exports.requiresLogin = funktion (req, res, nästa) { if (req.isAuthenticated ()) { återvänd nästa () } returnera res.redirect ("/ signin"); }; Efter att ha loggat in på min användare simulerade jag sessionens upphörande genom att ta bort sessionscookien. Därefter via webbplatsen gjorde jag en PUT '/ fantasyteams / 123' begäran om att uppdatera fantasy team nummer 123. fantasyteams.update är helt enkelt en mongodb / mongoose spara operation: exports.update = funktion (req, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (function (err) { res.jsonp (fantasyteam); }); }; Som förväntat fångade rutthanteraren (app.put ...) ovan begäran, skicka den till auth.requiresLogin mellanprogram för att kontrollera om användaren är inloggad. Så det visar sig att användaren inte är inloggad sedan jag raderade hans sessionskaka. res.redirect kallas som förväntat. Webbplatsen omdirigerar dock inte till inloggningssidan. Jag ser detta i kommandologgarna för node.js: PUT / inloggning 404 328ms Vad gjorde jag för fel?
2021-02-25 08:21:17
Det verkar som om problemet är att du inte har en rutthanterare för PUT / inloggning. Den ursprungliga begäran var en put, så när den omdirigeras är den fortfarande en del av samma "put" -förfrågan från webbläsaren. Lägg bara till en hanterare för put / post / vad som helst med app.all ('/ signin') 3 | Inte svaret du letar efter? Bläddra bland andra frågor taggade node.js session cookies uttrycker passport.js eller ställ din egen fråga.